package com.zhuang.io.bio.one;

import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;

@SuppressWarnings("all")
public class ClientDemo {
	/**
    目标: Socket网络编程。

    Java提供了一个包：java.net下的类都是用于网络通信。
    Java提供了基于套接字（端口）Socket的网络通信模式，我们基于这种模式就可以直接实现TCP通信。
    只要用Socket通信，那么就是基于TCP可靠传输通信。

    功能1：客户端发送一个消息，服务端接口一个消息，通信结束！！

    创建客户端对象：
        （1）创建一个Socket的通信管道，请求与服务端的端口连接。
        （2）从Socket管道中得到一个字节输出流。
        （3）把字节流改装成自己需要的流进行数据的发送
    创建服务端对象：
        （1）注册端口
        （2）开始等待接收客户端的连接,得到一个端到端的Socket管道
        （3）从Socket管道中得到一个字节输入流。
        （4）把字节输入流包装成自己需要的流进行数据的读取。

    Socket的使用：
        构造器：public Socket(String host, int port)
        方法：  public OutputStream getOutputStream()：获取字节输出流
               public InputStream getInputStream() :获取字节输入流

    ServerSocket的使用：
        构造器：public ServerSocket(int port)

    小结：
        通信是很严格的，对方怎么发你就怎么收，对方发多少你就只能收多少！！

 */
	public static void main(String[] args) throws Exception {

		System.out.println("==客户端的启动==");
		// （1）创建一个Socket的通信管道，请求与服务端的端口连接。
		Socket socket = new Socket("127.0.0.1", 8888);
		// （2）从Socket通信管道中得到一个字节输出流。
		OutputStream os = socket.getOutputStream();
		// （3）把字节流改装成自己需要的流进行数据的发送
		PrintStream ps = new PrintStream(os);
		// （4）开始发送消息
		ps.println("我是客户端，我想约你吃小龙虾！！！");
		ps.flush();

	}

}
